#include<bits/stdc++.h>
using namespace std;
int t,n,m,l,vm,s,cd[3005],sum,cnt;
vector<int> pd[3005];
bool f[3005];
struct node{
    int d,v,a,dm;
}c[3005];
bool solve(int x){
    for(int i=0;i<pd[x].size();i++)
    {
        if(cd[pd[x][i]]-1<=0) return 0;
    }
    return 1;
}

int main()
{
    freopen("detect.in","r",stdin);
    freopen("detect.out","w",stdout);
    cin>>t>>n>>m>>l>>vm;
    while(t--)
    {
            for(int i=1;i<=n;i++)
    {
        cin>>c[i].d>>c[i].v>>c[i].a;
        if(c[i].a=0) c[i].dm=l;
        else{
            c[i].dm=c[i].v*c[i].v/(2*c[i].a);
        }
    }
    for(int i=1;i<=m;i++)
    {
        cin>>s;
        for(int j=1;j<=n;j++)
        {
            if(c[i].d<=s&&c[i].dm>=s)
                {
                    if(sqrt(c[j].v*c[j].v+2*c[i].a*(s-c[i].d))>vm)
                    {
                        if(f[j]==0)
                        {
                            f[j]=1;
                            sum++;
                        }
                        cd[j]++;
                        pd[i].push_back(j);
                    }
                }
        }
        for(int i=1;i<=m;i++)
        {
            if(solve(i))
            {
                   for(int j=0;j<pd[i].size();i++)
                    {
                     cd[pd[i][j]]-=1;
                    }
                    cnt++;
            }
        }
    }
    cout<<sum<<" "<<cnt<<endl;
    cnt=0;
    sum=0;
    memset(f,sizeof(f),0);
    memset(cd,sizeof(cd),0);
     for(int i=1;i<=n;i++)
    for(int i=1;i<=n;i++)
    {
        c[i].a=0;
        c[i].v=0;
        c[i].d=0;
        c[i].dm=0;
    }
     for(int i=1;i<=m;i++) pd[i].clear();
    }
    return 0;
}
